// 导入登录接口api
import { login, sysProfile, sysUser } from '@/api/user.js'
// 导入cookies.js
import { getToken, setToken } from '@/utils/auth.js'

const state = {
  // 此时token的值要么为cookies中存储的值,要么为空,因为vuex中存储的值刷新就会被清空
  token: getToken() || '',
  // 用户信息
  userInfo: ''
}
const mutations = {
  // 设置token
  setToken(state, value) {
    state.token = value
    // 调用cookies.js方法将token存储到本地cookies中
    setToken(value)
  },
  // 退出清除token处理
  layout(state) {
    state.token = ''
    setToken('')
    // 退出时也要清空用户信息,因为有可能token401超时,返回到登录页了,但是因为有userInfo,获取用户信息的接口不会再调用,以免出现切换用户信息混乱的问题
    state.userInfo = ''
  },
  // 设置用户信息
  setUserInfo(state, value) {
    state.userInfo = value
  }
}
const getters = {}
const actions = {
  // 用户登录
  async toLogin(store, value) {
    console.log(value)
    const res = await login(value)
    store.commit('setToken', res.data)
  },
  // 获取用户信息
  async getUserInfo({ commit }) {
    const res = await sysProfile()
    const res1 = await sysUser(res.data.userId)
    // console.log(res1)
    // 将两个返回值合并为一个对象
    commit('setUserInfo', { ...res.data, ...res1.data })
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  getters,
  actions
}
